package com.fa.production.domain;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

// 自定义 Character 类型转换器
public class CharacterConverter implements Converter<Character> {

    // 指定转换器处理的 Java 类型（Character）
    @Override
    public Class<Character> supportJavaTypeKey() {
        return Character.class;
    }

    // 指定 Excel 单元格的数据类型（字符串类型，因为 Character 通常显示为单个字符）
    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    // Excel 读取时：将单元格数据（字符串）转换为 Character
    @Override
    public Character convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        String value = cellData.getStringValue();
        // 如果 Excel 单元格有值且长度为1，取第一个字符；否则返回 null
        return (value != null && value.length() == 1) ? value.charAt(0) : null;
    }

    // Excel 写入时：将 Character 转换为单元格的字符串数据
    @Override
    public WriteCellData<?> convertToExcelData(Character value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        // 将 Character 转为字符串（避免 EasyExcel 无法识别）
        return new WriteCellData<>(value != null ? String.valueOf(value) : "");
    }
}